// 为了解决冲突
// let obj = {
//     name: 'zhangsan',
//     age: 12,
//     gender: '男'
// 如果属性是变量就要使用中括号括起来
// };
// 新增属性
// let sy1 = Symbol('name');
// obj[sy1] = 'lis';
// console.log(obj);

// 消除魔术字符串
// function test(params) {
//     switch (params) {
//         case 'one':
//             console.log('这是one的操作');
//             break;
//         case "two":
//             console.log('这是two的操作');
//             break;
//         case "three":
//             console.log('这是three的操作');
//             break;
//         case "four":
//             console.log('这是four的操作');
//             break;
//         default:
//             console.log('这是默认的操作');
//             break;
//     }
// }
// test('one')

// Symbol消除魔术字符串
// let obj={
//     attr1:Symbol('one'),
//     attr2:Symbol('two'),
//     attr3:Symbol('three'),
//     attr4:Symbol('four')
// }
// function test(params) {
//     switch (params) {
//         case attr1:
//             console.log('这是one的操作');
//             break;
//         case attr2:
//             console.log('这是two的操作');
//             break;
//         case attr3:
//             console.log('这是three的操作');
//             break;
//         case attr4:
//             console.log('这是four的操作');
//             break;
//         default:
//             console.log('这是默认的操作');
//             break;
//     }
// }
// test(obj.attr1)

// 全局注册表
let sy1 = Symbol.for('hello');
let sy2 = Symbol.for('hello');
console.log(sy1 === sy2);
let sy3 = Symbol('hello');
let sy4 = Symbol('hello');
console.log(sy3 == sy4);
// 检测symbol的值是否全局注册过 返回key或者undefined
let result=Symbol.keyFor(sy1)
let result2=Symbol.keyFor(sy2)
let result3=Symbol.keyFor(sy3)
let result4=Symbol.keyFor(sy4)
console.log(result,result2,result3,result4,'全局注册表');